#ifndef __LIB_AGORA_ADMIN_ICHANNELMANAGER_H__
#define __LIB_AGORA_ADMIN_ICHANNELMANAGER_H__

#include <list>
#include <string>
#include "IChannel.h"

class	IChannelManager
{
public:
	//virtual IChannelManager*					GetChannelManager(void) = 0;
	virtual const unsigned int					LoadChannel() = 0;
	virtual IChannel*							CreateChannel(const std::string&, const unsigned int, const std::string&, const unsigned int, const std::string&, const unsigned int, const std::string&, const unsigned int, const bool, const unsigned int, const unsigned int) = 0;
	virtual IChannel*							CreateChannel(IChannel*, const std::string&, const unsigned int, const std::string&, const unsigned int, const std::string&, const unsigned int, const std::string&, const unsigned int, const bool, const unsigned int, const unsigned int) = 0;
	virtual void								DeleteChannel() = 0;
	//virtual const unsigned int					DeleteChannel(IChannel*) = 0;
	virtual const unsigned int					DeleteChannel(const unsigned int) = 0;
	virtual const unsigned int					DeleteChannel(IChannel*	channel) = 0;
	//virtual const unsigned int					DeleteChannel(const std::string&) = 0;
	virtual const unsigned int					MoveChannel(IChannel*, IChannel*) = 0;
	virtual const unsigned int					MoveChannel(IChannel*, const unsigned int) = 0;
	virtual const unsigned int					MoveChannel(IChannel*, const std::string&) = 0;
	virtual const unsigned int					MoveChannel(const unsigned int, IChannel*) = 0;
	virtual const unsigned int					MoveChannel(const unsigned int, const unsigned int) = 0;
	virtual const unsigned int					MoveChannel(const unsigned int, const std::string&) = 0;
	virtual const unsigned int					MoveChannel(const std::string&, IChannel*) = 0;
	virtual const unsigned int					MoveChannel(const std::string&, const unsigned int) = 0;
	virtual const unsigned int					MoveChannel(const std::string&, const std::string&) = 0;
	virtual IChannel*							GetChannel(const unsigned int) = 0;
	virtual IChannel*							GetChannel(const std::string&) = 0;
	virtual bool								ChannelExists(const unsigned int idParent, const std::string& name) = 0;
	virtual std::list<IChannel*>&				GetChannelList() = 0;
};

#endif